import { loginOut } from '@/api/login'
import { getUserInfo } from '@/api/common_apis'
export default {
  namespaced: true,
  state: () => ({
    // 是否显示礼包弹窗
    isShowGift: false,
    // 用户信息
    userData: {},
    // 是否登录
    isLogin: null
  }),
  mutations: {
    // 设置是否显示礼包弹窗
    setIsShowGift(state, data) {
      state.isShowGift = data
    },
    // 设置登录状态
    setLoginStatus(state, data) {
      state.isLogin = data
    },
    // 设置用户信息
    setUserData(state, data) {
      state.userData = data
    },
    // 设置跳转链接
    setlastUrl(state, data) {
      state.lastUrl = data
    }
  },
  actions: {
    // 判断是否登录
    async judgeLogin({ commit }, params = {}) {
      // 先看缓存数据是否存在
      let userData = localStorage.getItem('userData')
        ? JSON.parse(localStorage.getItem('userData'))
        : ''
      if (userData) {
        //存在缓存
        commit('setUserData', userData)
        commit('setLoginStatus', true)
        return
      }
      // 不存在
      params = {
        timestamp: new Date().valueOf(),
        ...params
      }
      let { errcode, errmsg, data = {} } = await getUserInfo(params).catch(
        err => {
          return { errcode: 1001, errmsg: '网络错误，请刷新重试', data: {} }
        }
      )
      if (+errcode === 1001) {
        commit('setUserData', {})
        commit('setLoginStatus', false)
        localStorage.removeItem('setUserData')
      } else {
        commit('setUserData', data)
        commit('setLoginStatus', true)
        localStorage.setItem('userData', JSON.stringify(data))
      }
    },
    // 退出登录
    async loginOut({ commit }, params = {}) {
      let { errcode, errmsg, data } = await loginOut(params).catch(err => {
        return { errcode: 1 }
      })
      if (errcode === 0) {
        // 删除缓存
        localStorage.removeItem('userData')
        commit('setUserData', {})
        commit('setLoginStatus', false)
      }
    },
    // 获取用户信息
    async getUserInfo({ commit }, params = {}) {
      // 不存在
      params = {
        timestamp: new Date().valueOf(),
        ...params
      }
      let { errcode, errmsg, data = {} } = await getUserInfo(params).catch(
        err => {
          return { errcode: 404, errmsg: '网络错误，请刷新重试', data: {} }
        }
      )
      if (+errcode === 0) {
        localStorage.setItem('userData', JSON.stringify(data))
      }
    }
  },
  getters: {}
}
